From the prior art a variety of techniques is known for embedding information into a data file. U.S. Pat. No. 6,208,745 shows an apparatus that inserts watermark information directly into an encoded video bit stream. The method identifies specific blocks or macro blocks in an encoded video bit stream and inserts the watermark information directly into the bit stream such that these selected blocks are replaced with a block containing watermark information or augmented with watermark information.
U.S. Pat. No. 6,201,881 shows a method for embedding of information in a three-dimensional geometric model by changing geometric parameters of a three-dimensional geometric model. The three-dimensional geometric model comprises polyhedrons, lines, a set of points, or curved surfaces which are primitives (components) of the model. Each primitive is defined by a geometric parameter. The geometric shape of a three-dimensional geometric model is defined by a set of many geometric parameters. The information is embedded by changing the geometric parameters of a plurality of primitives constituting a three-dimensional geometric model.
It is a common disadvantage of prior art methods for adding or “hiding” information in a data file that the data file itself is affected by the added information such that a rendering of the data file is not identical after the information has been added in comparison to a rendering of the original data file.
It is therefore an object of the present invention to provide an improved method, computer program product and computer system for providing an improved technique for encoding of information into a representation.
The underlying problem of the invention is solved basically by applying the features laid down in the independent claims. Preferred embodiments of the invention are given by the dependent claims.
The term representation is used in this document for any file which contains data for generating or rendering an object by means of a program. In general, such data has little or no redundancy which makes the application of prior art watermarking techniques practically impossible. Further the term representation as used in this document also encompasses command or program files such as DLL files and also compiled binary programmers. In other words the data contained in a representation is of a symbolic nature and requires interpretation by means of a computer program or a dedicated hardware.
The invention is particularly advantageous in that it allows to encode additional information into a representation without affecting a rendering of the representation. In fact the content of the original representation remains unchanged; information is only added by re-ordering the segments of the representation.
The re-ordering of the segments—by definition of the applied data format or standard—does not affect the rendering.
This is the case for all data formats and standards where the segments of the representation have an arbitrary order. In other words this is the case where the order of the segments in a representation does not carry information which affects the rendering of the representation.
Examples for such data formats and standards that support arbitrary ordering of segments are the Musical Instrument Digital Interface (MIDI), the Virtual Reality Modeling Language (VRML), vector graphics like Post Script files, PDF files and Dynamic Link Library (DLL) files.
The MIDI standard is described in the “Complete MIDI 1.0 Detailed Specification”, MIDI Manufacturers Association, March 1996. A MIDI file contains a number of MIDI sound modules within the data structure as specified in the above-referenced MIDI 1.0 Specification. The ordering of the sound modules within the MIDI file has no impact on the rendering of the file by an instrument, such as a synthesizer, having a MIDI interface.
Another example is VRML. This is a language for describing multi-participant interactive simulations such as virtual worlds networked via the global internet and hyperlinked with the World Wide Web. VRML allows for the creation of the virtual worlds which contain objects which have hyperlinks to other worlds, HTML documents or other valid VMRL or MIDI types. The ordering of those objects within a VRML file does not impact the virtual world which is represented by those objects. In other words the rendering of a VRML file does not change if the order of the objects within the file is interchanged.
Likewise Post Script files, DLL-files and MPEG 4 and MPEG 7 files contain segments of data of arbitrary ordering. Again the ordering of the data in such file formats can be arbitrarily changed without impacting the rendering of the corresponding file. This is also true for vector graphic files and other files containing data objects.
The present invention is particularly advantageous in that it can be employed for any kind of data format having segments of data with an arbitrary ordering such that the rendering of the data file is invariant against changing the order of the segments within the file.
It is a further advantage of the invention that it enables to “hide” information in such files where prior art watermarking techniques fail. According to the invention information can be hidden in such files which have no or little redundancy within the individual segments of data. This compares to prior art watermarking techniques which are not applicable to such data formats with no or little redundancy in the segments without corrupting the rendered file.
Applications of the present invention includes coding of identification data within the file to identify and/or track the file, for example by means of a serial number. Further information being descriptive of the manufacturer or the origin or the author of the file can be coded into the representation. However it is to be noted, that the invention enables to encode or “hide” any kind of information in a representation.
A particular field for application of the present invention is to encode an ID number within a data file which is to be handed over to a sub-contractor for the creation of a product, such as an ASIC. It is common practice in all kinds of industry to outsource parts of design work to a network of sub-contractors. This implies the challenge of keeping track of the information flow from and to the sub-contractors. For example, if a file containing a construction plan for an ASIC or another file containing blue-print is to be given to a sub-contractor an ID number of the originating company is encoded into the representation in order to identify the representation at any time.
Another field of application of the present invention is to control a distribution chain. Certain products have specified distribution chains where only authorized dealers are allowed to trade a certain good. To maintain and control such a restricted distribution chain the present invention can be employed as it allows to identify the origin of the product and its allowed distribution path.
In a further preferred embodiment of the invention the information hidden in the representation is used for the purposes of anti-counterfeit and copy protection. In case of a “scrambling attack” where the ordering of the segments in the representation is randomized in order to erase the hidden information the scrambled file becomes unusable as the file requires a matched renderer that expects anchor sequences at fixed positions that dependent on the encoded serial number.
In accordance with a further preferred embodiment of the invention only a small portion of the segments of a representation is used to encode information for the personalization of the file. This has the advantage that using only a relatively small portion of the segments makes it harder to identify the hidden information and to erase or alter it.
The flow chart of FIG. 1 is illustrative of an embodiment of the present invention. In step 10 a representation is provided. The representation is a file containing a number of segments of data. The ordering of the segments within the representation is arbitrary and does not affect the rendering of the representation. Examples of corresponding file formats are the Musical Instrument Digital Interface (MIDI), the Virtual Reality Modeling Language (VRML), Post Script, PDF, vector graphics, outputs of computer aided design programs and dynamic link libraries (DLL).
In step 12 the representation is provided to a computer program. The data structure definition of the applicable standard is integrated within the computer program in order to allow the computer program to identify segments of data within the representation which can be re-ordered without changing a later rendering of the representation.
In step 14 information is provided by a user or by another computer program. The Information provided in step 14 is to be coded or “hidden” within the representation. The information can be of any kind. Potential applications include a copyright notice, manufacturer data, an identification or serial number, a date or an authorized distributor chain.
In step 16 the segments identified in step 12 are re-ordered to encode the information provided in step 14. The encoding is done by performing a permutation on the segments in accordance with a code table or other coding algorithm.
In step 18 the representation with the permutated segments is outputted. The permutation of the segments carries the information provided in step 14.
The representation outputted in step 18 produces the same result when it is rendered in comparison to the original representation provided in step 10. This is a particular advantage of the invention as the hiding of the information provided in step 14 does not at all impact the quality of the rendering.
In accordance with a particular application of the invention the device which is used for the rendering expects the information provided in step 14. Before the rendering starts the rendering device checks if this expected information is present in the file to be rendered. Only if this pre-defined information is in fact encoded within the permutation of the segments the rendering starts. If the contrary is the case the device refuses the representation. For example, if the information provided in step 14 is a copyright notice, the device would refuse to render the representation if the copyright notice has been erased or altered. Likewise it is possible to make the rendering of the representation by the device dependent on the identification of other information such as a serial number or license number.
FIG. 2 shows a diagram illustrating the encoding of the information performed by means of the method of FIG. 1. FIG. 2 shows a file 20 which is a representation containing segments of data, i.e. segment A, segment B and segment C. Again the ordering of the segments A, B and C is arbitrary and does not affect the rendering of the file.
By means of a permutation the ordering of the segments within the file 20 is changed to B, A, C. When the code table of FIG. 3 is used this corresponds to the information “001”.
In other words: If the information “001” is to be coded into the file 20 the ordering of the segments needs to be B, A, C in accordance with the code table of FIG. 3.
In a more general case a number of n segments of a file are used for the encoding of information. In this case 2n different permutations can be done with the n segments. This allows to encode a number of 2n data words.
The block diagram of FIG. 4 shows a computer 40. The computer 40 has a code table 42 or alternatively a coding algorithm in order to specify an order of data segments of the file for a given information to be hidden.
Further the computer 40 has a program 44. The program 44 has an identification module 46 and a coding module 48. The identification module 46 serves to identify segments of data which can be re-ordered without impacting a later rendering. The coding module 48 serves to determining the required order of the data segments by means of the code table 42 to encode a given information.
Further the computer 40 has a memory 50 for buffering a representation 52 which is inputted into the computer 40 for encoding of information 54.
In operation the representation 52 (cf. file 20 of FIG. 2) is inputted into the computer 40 and stored in the memory 50. Further the information 54 to be encoded into the representation 52 is inputted into the computer 40 and specifically into the program 44.
The program 44 identifies segments of data in the representation 52 by means of its identification module 46. Further the program 44 determines by means of its coding module 48 a required ordering of the segments identified by the identification module 46 to encode the information 54. This is done by the coding module 48 by accessing the code table 42.
Next the program 44 re-orders the segments of the representation 52 within the memory 50 in accordance with the output of the coding module 48.
A resulting representation 56 is then outputted from the memory 50. The representation 56 contains the information 54 which is carried by the particular ordering of its segments.
LIST OF REFERENCE NUMERALSstep10step12step14step16step18file20computer40code table42program44identification module46coding module48memory50representation52information54representation56